perm filename DIV2.LSP[TIM,LSP] blob sn#677327 filedate 1982-09-09 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	 Dividing by 2 using lists of n ()'s
C00004 ENDMK
CāŠ—;
;;; Dividing by 2 using lists of n ()'s

(declare (fixsw t))

(defun create-n (n)
       (do ((n n (1- n))
	    (a () (push () a)))
	   ((= n 0) a)))

(defun div2 (l)
       (do ((l l (cddr l))
	    (a () (push (car l) a)))
	   ((null l) a)))

(defun dv2 (l)
       (cond ((null l) ())
	     (t (cons (car l) (dv2 (cddr l))))))

(defun test1 (l)
       (do ((i 300. (1- i)))
	   ((= i 0))
	   (div2 l)
	   (div2 l)
	   (div2 l)
	   (div2 l)))

(defun test2 (l)
       (do ((i 300. (1- i)))
	   ((= i 0))
	   (dv2 l)
	   (dv2 l)
	   (dv2 l)
	   (dv2 l)))

(declare (special l))
(setq l (create-n 200.))

(include "timer.lsp")
(timer timit1
       (test1 l))
(timer timit2
       (test2 l))